/**
    ### 1553C - Penalty 
    - 考点：普及、模拟、贪心
    - 难度：1200pt
    - 对标：CSP入门组第二题
    - 备注：模拟并记录，讨论胜利情况
    - 分析：
        * - 在遍历到第i次投篮时，我要知道i次投篮后。
        * - max_a表示a同学最多得分，min_a表示最少得分
        * - max_b表示b最多得分，min_b表示最少得分
        * - left_a表示第i次投篮后，a还剩多少次机会=floor((10-i)/2.0)
        * - left_b表示第i次投篮后，b还剩多少次机会=ceil((10-i)/2.0)
        * - 有一种可能是确定a胜利：(max_a-min_b) > left_b
        * - b胜利:(max_b-min_a) > left_a 
 */
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5;
int T,n;
char s[256];
int main() {
    cin >> T;
    while (T--)
    {
        int ans = 10, max_a=0,max_b=0,min_a=0,min_b=0;
        scanf("%s", s+1);
        for(int i=1;i<=10;i++) {
            if(i%2 != 0) {
                if(s[i] == '1') {max_a++; min_a++;} 
                else if(s[i] == '?')  max_a++;
            } else {
                if(s[i] == '1') {max_b ++ ; min_b++;} 
                else if(s[i] == '?')  max_b++; 
            }
            int left_a = floor((10-i)/2.0);
            int left_b = ceil((10-i)/2.0);
            if((max_a-min_b) > left_b  || (max_b-min_a) > left_a ) {
                ans = i;
                break;
            }
        }
        cout << ans << endl;
    }
    return 0;
}